#include <SD.h>
#include <FS.h>
#include <SPI.h>

//接口定义
SPIClass SDSPI(VSPI);
#define SD_MISO 19
#define SD_MOSI 23
#define SD_SCLK 18
#define SD_CS 5

void SD_init() {
  //挂载文件系统
  // SDSPI.begin(SD_SCLK, SD_MISO, SD_MOSI, SD_CS);
  if (!SD.begin(SD_CS, SDSPI)) {
    Serial.println("存储卡挂载失败");
    return;
  }
}

void SD_Test() {
  File myFile;
  Serial.print("Initializing SD card...");
  //注意,必须将CS引脚设置为输出模式,否则SD库功能将不起作用。
  //此处将10引脚作为CS并设置为输出OUTPUT模式
  // pinMode(cs, OUTPUT);

  if (!SD.begin()) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  //打开文件。 请注意，一次只能打开一个文件
  //您必须先关闭该文件再打开另一个文件。
  myFile = SD.open("test.txt", FILE_WRITE);

  // 如果文件打开,则进行写入
  if (myFile) {
    Serial.print("Writing to test.txt...");
    myFile.println("testing 1, 2, 3.");
    // 关闭文件打开状态
    myFile.close();
    Serial.println("done.");
  } else {
    //如果文件没有打开,则向串口输出文件打开错误
    Serial.println("error opening test.txt");
  }

  // 重新读取该文件<span style="color: #ffffff;">太极创客(www.taichi-maker.com)</span>
  myFile = SD.open("test.txt");
  if (myFile) {
    Serial.println("test.txt:");

    //从文件里读取数据并打印到串口,直到读取完成
    while (myFile.available()) {
      Serial.write(myFile.read());
    }
    // 关闭文件打开状态
    myFile.close();
  } else {
    //如果文件没有打开,则向串口输出文件打开错误
    Serial.println("error opening test.txt");
  }
}
